Date: Tue, 10 Dec 1996 22:06:05 GMT
Server: NCSA/1.4.2
Content-type: text/html
Last-modified: Wed, 04 Dec 1996 07:31:46 GMT
Content-length: 3920

<head>
<title>
Transaction Support in the SPIN Operating System</title>
</head>
<body>
<h1>
<!WA0><img src="http://www.cs.washington.edu/homes/yasushi/transaction/disk_server.gif">
Transaction Support in the SPIN Operating System</h1>

Last modified:Sun Nov 24 20:01:50 1996

<h2>Why am I doing this?</h2>

Supporting transaction service at the operating system level has been
considered a bad idea, because operating systems haven't been
traditionally flexible
enough to accommodate various needs of database systems.

<ul>
  <li> Application can not take advantage of
       specialized locking or logging. For example, there are many researches
       on concurrent Btree updates. Since such techniques depend on precise
       data placements, it is difficult to implement them inside OS.
  <li> and more...
</ul>

<p> Therefore, almost all of the commercial database systems are built
on top of generic operating systems.  This approach is not without problems;
they were pointed out 15 years ago by Mike
Stonebraker and have never seen satisfactory solution till now.
<ul>
  <li> Double buffering; database engine usually maintains the buffer
       on ordinary user memory, so the data is duplicated on user buffer
       and kernel file buffer. Also, user buffer leads to memory
       underutilization.
  <li> and more...
</ul>

<p> I'm trying to solve this dilemma by using
<!WA1><a href="http://www.cs.washington.edu/research/projects/spin/www/index.html">
SPIN</a>. SPIN allows an untrusted user code to be downloaded into
the kernel space. I'm trying to write a high performance distributed
transaction service which is both fast and flexible
(<small>and
doesn't crash, hopefully...</small>).
As a first step, I will write a simple transactional memory like
provided in Camelot. 

<p> <!WA2><a href="mailto:yasushi@cs.washington.edu">Yasushi Saito</a>
is working on the project with Brian Bershad. I'm also getting a lot
of help from
people in SPIN and
<!WA3><a href="http://www.cs.washington.edu/homes/levy/opal/opal.html">Opal</a>.


<h2><!WA4><a href="http://www.cs.washington.edu/homes/yasushi/transaction/qual.html">Status Report</a></h2>
<h2><!WA5><a href="http://www.cs.washington.edu/homes/yasushi/transaction/perf.html">Performance Study</a></h2>

<h2><!WA6><a href="file://www.cs.washington.edu/homes/yasushi/transaction//afs/cs/home/yasushi/trans/doc/index.html">
Documentation(UW only)</a></h2>

<h2><!WA7><a href="http://www.cs.washington.edu/homes/yasushi/transaction/papers.html">Some Papers I've read</a></h2>

<h2>Papers and other resources</h2>

Here's a random collection of papers and source codes that I culled
from the world.

<ul>
  <li> <!WA8><a href="http://www.objenv.com/cetus/software.html">
       Collection of OODB links</a>
  <li> <!WA9><a href="http://bunny.cs.uiuc.edu/sigmod/sigmod_record/">
       SIGMOD</a>
  <li> <!WA10><a href="http://131.107.1.182:80/research/BARC/Gray/">
       Jim Gray's home page</a>
  <li>
       <!WA11><a href="http://www-ccs.cs.umass.edu:80/db.html">
       U Mass Database Page(fabulous!)</a>
  <li> <!WA12><a href="http://glimpse.cs.arizona.edu:1994/bib/Database/index.html">
       U Arizona Database Bibliography</a>
  <li> <!WA13><a href="http://www.cs.washington.edu/homes/yasushi/transaction/txns.ps">Seltzer, Transaction Support in a Log-Structured File System</a>
  <li> <!WA14><a href="http://www.cs.washington.edu/homes/yasushi/transaction/libtp.ps">Seltzer, Olson, LIBTP </a>
  <li> <!WA15><a href="http://www.cs.washington.edu/homes/yasushi/transaction/rvm_manual.ps">RVM document</a>, 
       <!WA16><a href="http://www.cs.washington.edu/homes/yasushi/transaction/RVM1.3.TAR">version 1.3 source</a>, and
       <!WA17><a href="http://www.cs.washington.edu/homes/yasushi/transaction/RVMuwfix.tar.gz">1.3 with Alpha fix(courtesy Dylan
       Mcnamee)</a>.
  <li> <!WA18><a href="http://www.cs.wisc.edu:80/Dienst/Repository/2.0/Body/ncstrl.uwmadison%2fCS-TR-94-1242/postscript">Seth White, 
       Pointer Swizzling Techniques for Object-Oriented Database Systems</a>
  <li> <!WA19><a href="http://www.cs.washington.edu/homes/feeley/generals/DataManagement/DataManagement.html">Mike Feeley's General Exam Paper</a>
  <li> <!WA20><a href="http://www.cs.washington.edu/homes/yasushi/transaction/metalbase-5.0.tar.gz">Metalbase 5.0(simple&stupid database)</a>
  <li> <!WA21><a href="http://www.cs.washington.edu/homes/yasushi/transaction/yooda-1.2.tar.gz">Yooda(looks terrific, but I couldn't make it work)</a>
  <li> <!WA22><a href="http://www.cs.washington.edu/homes/yasushi/transaction/tr1081.ps">Crash Recovery in Client-Server Exodus</a>
  <li><!WA23><a href="http://liinwww.ira.uka.de/bibliography/index.html">
bib server</a>

</ul>


<hr>
<address> yasushi@cs.washington.edu </address>
</body>
